#pragma once

#include <string>
#include <vector>

namespace GPUCC
{
	class Utils
	{
	public:
		static std::string GetFullPath(const std::string& Path);
		static bool FileExists(const std::string& Path);
		static bool DirectoryExists(const std::string& Path);
		static std::vector<std::string> Utils::GetAllFilesNames(std::string FolderPath, const std::string& Filter = "*");

		static std::vector<std::string> SplitString(const std::string& Value, const char Seperator);

		static std::vector<unsigned char> ConvertHexToBytes(const std::string& Value);
		static unsigned int ConvertStringToUnsignedInt(const std::string& Value);

		static void ConvertFromTotalSeconds(unsigned int TotalElapsedSeconds, unsigned int& ElapsedHours, unsigned int& ElapsedMinutes, unsigned int& ElapsedSeconds);

	private:
		static bool ValidateCharsRanges(const std::string& Value, const std::vector<std::pair<const char, const char>>& Limits);
		static bool ValidateCharsRange(const std::string& Value, const char LowLimit, const char HighLimit);
	};
}